home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip: Special Tips & Tricks for Windows 95
/
Chip Wintips.iso
/
sterown
/
grafika
/
w2p_pd13
/
pd13.ms_
/
pd13.ms
Wrap
Text File
|
1996-03-25
|
22KB
|
717 lines
'**************************************************************************
'* setup script for POWERdraft for AutoCAD R13 (Win32s & NT)
'**************************************************************************
'*
'* REV:
'* 09.01.95, mk: stolen from POWERdraft R12/Win :-)
'* 19.01.95, mk: added the naming scheme for the new Windows drivers
'* 13.03.95, mk: installation of PD12 _and_ PD13 on one machine didn't work
'$DEFINE DEBUG ''Define for script development/debugging
'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'
''Dialog ID's
CONST LANGUAGE = 50
CONST WELCOME = 100
CONST ASKQUIT = 200
CONST ACADPATH = 300
CONST DESTPATH = 350
CONST EXITFAILURE = 400
CONST EXITQUIT = 600
CONST EXITOK = 700
CONST DRVHELP = 900
CONST EXITFAILNOWIN32 = 1100
CONST EXITFAILNOTWIN31 = 1200
CONST EXITFAILNOTELSA = 1500
CONST EXITFAILOLDDRV31 = 1550
CONST EXITFAILOLDDRV95 = 1560
CONST EXITFAILOLDDRVNT = 1570
CONST WILLBREAKOLD = 1600
CONST WILLBREAKNEW = 1650
CONST BADPATH = 6400
''Bitmap ID
CONST LOGO = 1
CONST DRIVERFAMILY = "POWERdraft for AutoCAD"
CONST DRIVERKEY = "WinADIR13"
CONST DRIVERNAME = "POWERdraft for AutoCAD R13"
CONST MINDRVVER31 = "5.20" '' remember to update dialog EXITFAILOLDDRV31!
CONST MINDRVVER95 = "1.04.002" '' remember to update dialog EXITFAILOLDDRV95!
CONST MINDRVVERNT = "3.59.00.00" '' remember to update dialog EXITFAILOLDDRVNT!
GLOBAL CUIDLL$ ''name of custom user interface DLL
GLOBAL DEST$ ''Default destination directory.
GLOBAL DESTACAD$ ''ACAD's home directory.
GLOBAL DESTWIN$ ''Windows directory.
GLOBAL DESTSYS$ ''Windows\System directory.
GLOBAL LANG% ''language code, is added to every dialog ID
GLOBAL IsWindowsNT% ''We are executed in NT
GLOBAL ExitCode% ''global error code
DECLARE SUB Install
DECLARE SUB UpdateELSADisp
DECLARE SUB UpdateSystemIni
DECLARE SUB RebootSystem
DECLARE FUNCTION NeedELSADisp AS INTEGER
DECLARE FUNCTION NeedNewWin32s AS INTEGER
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
DECLARE FUNCTION OnWindows95 AS INTEGER
DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
DECLARE FUNCTION IsWin32sLoaded LIB "INIUPD.DLL" (arg1$) AS INTEGER
DECLARE FUNCTION GlobalFindAtom LIB "USER" (arg1$) AS INTEGER
INIT:
''dummy% = DoMsgBox("MK's MessageBox template", "DEBUG", MB_OK+MB_TASKMODAL+MB_ICONHAND)
CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
IsWindowsNT% = 0
ExitCode% = EXITFAILURE
ON ERROR GOTO ERRNORMAL
'' build a global list of ELSA system components used by this driver
AddListItem "USES", "DRWh"
AddListItem "USES", "DL32h"
SrcDir$ = GetSymbolValue("STF_SRCDIR")
SetBitmap CUIDLL$, LOGO
SetTitle DRIVERFAMILY
szInf$ = GetSymbolValue("STF_SRCINFPATH")
IF szInf$ = "" THEN
szInf$ = GetSymbolValue("STF_CWDDIR") + "PD13.INF"
END IF
ReadInfFile szInf$
LANG% = 0
DEST$ = "C:\WINNER\WINADI\"
DESTWIN$ = GetWindowsDir()
DESTSYS$ = GetWindowsSysDir()
'$IFDEF DEBUG
i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal
WinDrive$ = MID$(GetWindowsDir, 1, 1)
IF IsDriveValid(WinDrive$) = 0 THEN
i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
GOTO QUIT
END IF
'$ENDIF ''DEBUG
LANGUAGE:
langstr$ = STR$(LANG% + 1)
SetSymbolValue "RadioDefault", langstr$
LANGL1:
sz$ = UIStartDlg(CUIDLL$, LANGUAGE, "FRadioDlgProc", 0, "")
langstr$ = GetSymbolValue("ButtonChecked")
LANG% = VAL(LANGSTR$) - 1
IF sz$ = "CONTINUE" THEN
UIPop(1)
ELSEIF sz$ = "REACTIVATE" THEN
GOTO LANGL1
ELSE
GOSUB ASKQUIT
GOTO LANGUAGE
END IF
WELCOME:
sz$ = UIStartDlg(CUIDLL$, WELCOME+LANG%, "FInfoDlgProc", DRVHELP+LANG%, HELPPROC$)
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
GOTO WELCOME
ELSEIF sz$ = "BACK" THEN
UIPop 1
GOTO LANGUAGE
ELSE
GOSUB ASKQUIT
GOTO WELCOME
END IF
CHECK:
IF OnWindowsNT() THEN
DESTSYS$ = DESTWIN$ + "system32"
IF MID$(DESTSYS$, LEN(DESTSYS$), 1) <> "\" THEN
DESTSYS$ = DESTSYS$ + "\"
END IF
IsWindowsNT% = 1
GOTO CHECKDRIVER
END IF
IF GetWindowsMajorVersion < 3 THEN
ExitCode% = EXITFAILNOTWIN31
GOTO QUIT
END IF
IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 1 THEN
ExitCode% = EXITFAILNOTWIN31
GOTO QUIT
END IF
IF GetWindowsMajorVersion >= 4 THEN
ExitCode% = EXITFAILNOTWIN31
GOTO QUIT
END IF
'' If Win32s is already installed, get running version number
IF DoesFileExist(DESTSYS$ + "W32SYS.DLL", femExists) THEN
szOldVer$ ="1.00.000 " ''Reserve space in string for version
i% = IsWin32sLoaded( szOldVer$ )
IF i% = 0 THEN
ExitCode% = EXITFAILNOWIN32
GOTO QUIT
END IF
END IF
CHECKDRIVER:
IF GlobalFindAtom( "ELSA_Driver" ) = 0 THEN
ExitCode% = EXITFAILOLDDRVNT
GOTO QUIT
END IF
GOTO CHECKDONE
''!!mb: here the display driver version should be checked !!!!
CHECKDONE:
'' try to find AutoCAD, if it fails keep string empty
'' typical entry in WIN.INI is:
'' [Extensions]
'' dwg=D:\ACAD\R12C1WUS\acad.exe ^.dwg
'' or
'' dwg=D:\ACAD\LTWIN\aclt.exe ^.dwg
DESTACAD$ = UCASE$( GetIniKeyString( "WIN.INI", "Extensions", "dwg" ) )
IF INSTR( DESTACAD$, "\ACAD.EXE" ) <> 0 THEN
DESTACAD$ = MID$( DESTACAD$, 1, INSTR( DESTACAD$, "\ACAD.EXE" ) )
ELSE
DESTACAD$ = ""
END IF
GETACAD:
SetSymbolValue "EditTextIn", DESTACAD$
SetSymbolValue "EditFocus", "END"
GETACADL1:
sz$ = UIStartDlg(CUIDLL$, ACADPATH+LANG%, "FEditDlgProc", DRVHELP+LANG%, HELPPROC$)
DESTACAD$ = LTRIM$(RTRIM$(UCASE$( GetSymbolValue("EditTextOut") )))
IF sz$ = "CONTINUE" THEN
IF DESTACAD$ = "" THEN
GOSUB BADPATH
GOTO GETACADL1
END IF
IF MID$(DESTACAD$, LEN(DESTACAD$), 1) <> "\" THEN
DESTACAD$ = DESTACAD$ + "\"
END IF
IF DoesDirExist(DESTACAD$) = 0 THEN
GOSUB BADPATH
GOTO GETACADL1
END IF
IF DoesFileExist(DESTACAD$+"ACAD.EXE",femExist)=0 AND DoesFileExist(DESTACAD$+"ACAD.INI",femExist)=0 THEN
GOSUB BADPATH
GOTO GETACADL1
END IF
'' R12 has a ACAD.DLL
IF DoesFileExist( DESTACAD$ + "ACAD.DLL", femExist ) THEN
GOSUB BADPATH
GOTO GETACADL1
END IF
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
GOTO GETACADL1
ELSEIF sz$ = "BACK" THEN
UIPop 1
GOTO WELCOME
ELSE
GOSUB ASKQUIT
GOTO GETACAD
END IF
GETPATH:
SetSymbolValue "EditTextIn", DEST$
SetSymbolValue "EditFocus", "END"
GETPATHL1:
sz$ = UIStartDlg(CUIDLL$, DESTPATH+LANG%, "FEditDlgProc", DRVHELP+LANG%, HELPPROC$)
DEST$ = LTRIM$(RTRIM$(UCASE$( GetSymbolValue("EditTextOut") )))
IF sz$ = "CONTINUE" THEN
IF DEST$ = "" THEN
GOSUB BADPATH
GOTO GETPATHL1
END IF
IF MID$(DEST$, LEN(DEST$), 1) <> "\" THEN
DEST$ = DEST$ + "\"
END IF
IF IsDirWritable(DEST$) = 0 THEN
GOSUB BADPATH
GOTO GETPATHL1
END IF
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
GOTO GETPATHL1
ELSEIF sz$ = "BACK" THEN
UIPop 1
GOTO GETACAD
ELSE
GOSUB ASKQUIT
GOTO GETPATH
END IF
CHECKDISP:
IF NeedELSADisp() = -1 THEN
ExitCode% = EXITQUIT
GOTO QUIT
END IF
DOINSTALL:
Install
QUIT:
ON ERROR GOTO ERRQUIT
IF ERR = 0 THEN
dlg% = ExitCode%
ELSEIF ERR = STFQUIT THEN
dlg% = EXITQUIT
ExitCode% = EXITQUIT
ELSE
i% = DoMsgBox("Internal error: "+ERROR$ +" ("+STR$(ERR)+") in line "+STR$(ERL), "Runtime error", MB_OK+MB_TASKMODAL+MB_ICONINFORMATION)
dlg% = EXITFAILURE
ExitCode% = EXITQUIT
END IF
QUITL1:
sz$ = UIStartDlg(CUIDLL$, dlg%+LANG%, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO QUITL1
END IF
UIPop 1
END
'*****************************************************************************
ERRQUIT:
i% = DoMsgBox("Setup sources were corrupted, call your dealer!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
END
'' Bypass run-time errors. Let final dialog box display fatal error message.
ERRNORMAL:
'' Check if user cancelled setup
IF ERR = STFQUIT THEN
GOTO QUIT
END IF
RESUME NEXT
BADPATH:
sz$ = UIStartDlg(CUIDLL$, BADPATH+LANG%, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO BADPATH
END IF
UIPop 1
RETURN
ASKQUIT:
sz$ = UIStartDlg(CUIDLL$, ASKQUIT+LANG%, "FQuitDlgProc", 0, "")
IF sz$ = "EXIT" THEN
UIPopAll
ERROR STFQUIT
ELSEIF sz$ = "REACTIVATE" THEN
GOTO ASKQUIT
ELSE
UIPop 1
END IF
RETURN
'**
'** Purpose:
'** Builds the copy list and performs all installation operations.
'** Arguments:
'** none.
'** Returns:
'** none.
'*************************************************************************
SUB Install STATIC
ExitCode% = EXITFAILURE
SrcDir$ = GetSymbolValue("STF_SRCDIR")
'' let's start with POWERdraft files
CreateDir DEST$, cmoNone
OpenLogFile DEST$ + "PD13.LOG", 0
WriteToLogFile ""
WriteToLogFile " Source directory: '" + SrcDir$ + "'"
WriteToLogFile " Destination directory: '" + DEST$ + "'"
WriteToLogFile " AutoCAD directory: '" + DESTACAD$ + "'"
WriteToLogFile " Windows directory: '" + DESTWIN$ + "'"
WriteToLogFile " Windows sys directory: '" + DESTSYS$ + "'"
WriteToLogFile ""
'' Gimme a second, need to clean up a problem of early SETUPs
IF IsWindowsNT% = 0 THEN
WriteToLogFile "'' fix wrong installation of early SETUP versions"
FOR i%=1 TO GetListLength("USES") STEP 1
Component$ = GetListItem( "USES", i% )
MakeListFromSectionFilename "MOVEFILES", Component$
FOR j%=1 TO GetListLength("MOVEFILES") STEP 1
szFile$ = GetListItem( "MOVEFILES", j% )
IF DoesFileExist(DESTSYS$ + szFile$,femExist) THEN
CopyFile DESTSYS$ + szFile$, DESTWIN$ + szFile$, cmoNone,0
RemoveFile DESTSYS$ + szFile$, cmoNone
END IF
NEXT j%
RemoveSymbol "MOVEFILES"
NEXT i%
END IF
AddSectionFilesToCopyList DRIVERKEY, SrcDir$, DEST$
FOR i%=1 TO GetListLength("USES") STEP 1
Component$ = GetListItem( "USES", i% )
IF IsWindowsNT% = 1 THEN
AddSectionFilesToCopyList Component$, SrcDir$, DESTSYS$
ELSE
'' in Win3.1 DESTWIN$ is the local directory,
'' DESTSYS$ might be on the network
AddSectionFilesToCopyList Component$, SrcDir$, DESTWIN$
END IF
NEXT i%
'' next line is a debugging aid:
'' DumpCopyList DEST$ + "PD13.LST"
CopyFilesInCopyList
IF ERR <> 0 THEN
EXIT SUB
END IF
'' if copy succeeded, do all INI changes, first for POWERdraft ...
ini$ = DESTWIN$ + "DSELSA13.INI"
CreateIniKeyValue ini$, "POWERdraft", "Cockpit", "1", cmoNone
'' maintain our ELSADISP.INI
UpdateELSADisp
IF DESTACAD$ <> "" THEN
ini$ = MakePath(DESTACAD$, "ACAD.INI")
acadsect$ = "General"
'' append destination path to AutoCAD's key ACADDRV in ACAD.INI
acaddrv$ = UCASE$( GetIniKeyString( ini$, acadsect$, "ACADDRV" ) )
'' this is to fix a bug in R13 initial version, they do not include
'' .\DRV in ACADDRV - no idea how they find the drivers anyway -
'' at least when we add our dir, the drivers in .\DRV are inaccessible
IF INSTR( acaddrv$, ";" ) = 0 THEN
acaddrv$ = acaddrv$ + ";" + DESTACAD$
END IF
IF INSTR( acaddrv$, DEST$ ) = 0 THEN
acaddrv$ = acaddrv$ + ";" + DEST$
END IF
CreateIniKeyValue ini$, acadsect$, "ACADDRV", acaddrv$, cmoOverwrite
'' We do not support Autodesk's aerial view, so turn it off!
CreateIniKeyValue ini$, "Aerial View", "Enabled", "0", cmoOverwrite
''!! FIXME: replace _DSVIEWER with SUPERVIEW, add some icons?
IF GetIniKeyString( ini$, acadsect$, "ToolBar1" ) = "" THEN
' they have a built in default of 17 buttons
''!! CreateIniKeyValue ini$, acadsect$, "ToolBar18", "'Cockpit #C", cmoOverwrite
''!! CreateIniKeyValue ini$, acadsect$, "ToolBar19", "'MagniView #M", cmoOverwrite
ELSE
' user already changed buttons that made ACAD write list to ini file
FOR i%=1 TO 26 STEP 1
tb_key$ = "ToolBar" + LTRIM$(RTRIM$( STR$(i) ))
tb_val$ = UCASE$( GetIniKeyString( ini$, acadsect$, tb_key$ ) )
IF INSTR( tb_val$, "COCKPIT" ) THEN
EXIT FOR
END IF
IF tb_val$ = "" THEN
CreateIniKeyValue ini$, acadsect$, tb_key$, "'Cockpit #C", cmoOverwrite
EXIT FOR
END IF
NEXT i%
FOR i%=1 TO 26 STEP 1
tb_key$ = "ToolBar" + LTRIM$(RTRIM$( STR$(i) ))
tb_val$ = UCASE$( GetIniKeyString( ini$, acadsect$, tb_key$ ) )
IF INSTR( tb_val$, "MAGNIVIEW" ) THEN
EXIT FOR
END IF
IF tb_val$ = "" THEN
CreateIniKeyValue ini$, acadsect$, tb_key$, "'MagniView #M", cmoOverwrite
EXIT FOR
END IF
NEXT i%
END IF
'' modify AutoCAD's menu file, but keep a copy!
''!! IF DoesFileExist(DESTACAD$ + "acad_o.mnu",femExists) = 0 THEN
''!! RenameFile DESTACAD$ + "acad.mnu", "acad_o.mnu"
''!! ELSE
''!! CopyFile DESTACAD$ + "acad.mnu", DESTACAD$ + "acad_o.mnu"
''!! END IF
''!! modify menu file here: DSVIEWER -> SUPERVIEW, +MAGNIVIEW, +COCKPIT
END IF
'' put a help file icon into AutoCAD group in ProgMangler
IF LANG%=1 THEN
helpfile$ = DEST$ + "lang13de.hlp"
ELSE
helpfile$ = DEST$ + "lang13en.hlp"
END IF
CreateProgmanItem "AutoCAD R13", DRIVERNAME, helpfile$, "", cmoOverwrite
ExitCode% = EXITOK
CloseLogFile
END SUB
'**
'** Purpose:
'** Check versions of our system components and handle compatibility
'** conflicts
'** Arguments:
'** -
'** Returns:
'** 0 for no install needed, 1 for install required, -1 for abort
'*************************************************************************
FUNCTION NeedELSADisp STATIC AS INTEGER
ReturnValue% = 1
'' we have version numbers of all components in our INI file ELSADISP.INI
'' use this to check for incompatible updates
ELSAdisp$ = DESTWIN$ + "ELSADISP.INI"
IF DoesFileExist(ELSAdisp$,femExist) THEN
IF DoesFileExist(ELSAdisp$,femReadWrite) = 0 THEN
i% = DoMsgBox( "ABORT: " + ELSAdisp$ + " is write protected!", "Fatal Error", MB_ICONSTOP+MB_TASKMODAL)
NeedELSADisp = -1
EXIT FUNCTION
END If
END IF
'' Check versions of system components,
'' use the file marked "VERCHECK" in each group
FOR i%=1 TO GetListLength("USES") STEP 1
Component$ = GetListItem( "USES", i% )
usedby$ = GetIniKeyString( ELSAdisp$, Component$, "UsedBy" )
'' get compatibility levels
szNewVer$ = GetSectionKeyVersion(Component$,"VERCHECK")
IF IsWindowsNT% = 1 THEN
szOldVer$ = GetVersionOfFile( DESTSYS$ + GetSectionKeyFileName(Component$,"VERCHECK") )
ELSE
szOldVer$ = GetVersionOfFile( DESTWIN$ + GetSectionKeyFileName(Component$,"VERCHECK") )
'' Once upon a time we had a broken SETUP ...
'' that installed to DESTSYS instead of DESTWIN, so look there too,
'' we will move the files in subroutine Install
IF szOldVer$ = "" THEN
szOldVer$ = GetVersionOfFile( DESTSYS$ + GetSectionKeyFileName(Component$,"VERCHECK") )
END IF
END IF
'' can not be incompatible if it is not installed ...
IF szOldVer$ <> "" THEN
szNewLev& = GetVersionNthField( szNewVer$, 1 )
szOldLev& = GetVersionNthField( szOldVer$, 1 )
'' remember incompatible components in a list
IF szNewLev& <> szOldLev& THEN
AddListItem "COMPLEVEL", Component$
ReturnValue% = 2
ENDIF
'' build list of broken apps
FOR j% = 1 TO 999 STEP 1
app$ = GetNthFieldFromIniString( usedby$, j% )
IF app$ = "" THEN
EXIT FOR
END IF
AppName$ = GetIniKeyString( ELSAdisp$, app$, "FullName" )
IF szNewLev& > szOldLev& THEN
''add every app only once ...
IF INSTR(OldApps$,AppName$) = 0 THEN
''... and never ourselves
IF AppName$<>DRIVERNAME THEN
OldApps$ = OldApps$ + AppName$ + ";"
END IF
END IF
ELSEIF szNewLev& < szOldLev& THEN
'' oh shit, we are really old!
IF INSTR( NewApps$, AppName$ ) = 0 THEN
IF AppName$<>DRIVERNAME THEN
NewApps$ = NewApps$ + AppName$ + ";"
END IF
END IF
END IF
NEXT j%
END IF
NEXT i%
IF OldApps$ <> "" THEN
BROKENOLD:
''convert our string delimited with ";" into a Symbol table list
RemoveSymbol "ListItemsIn"
WHILE OldApps$ <> ""
i% = INSTR( OldApps$, ";" )
AppName$ = MID$( OldApps$, 1, i%-1 )
AddListItem "ListItemsIn", AppName$
OldApps$ = MID$( OldApps$, i%+1 )
WEND
sz$ = UIStartDlg(CUIDLL$, WILLBREAKOLD+LANG%, "FListDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
GOTO BROKENOLD
ELSE
UIPop 1
ReturnValue% = -1
END IF
END IF
IF NewApps$ <> "" THEN
BROKENNEW:
RemoveSymbol "ListItemsIn"
WHILE NewApps$ <> ""
i% = INSTR( NewApps$, ";" )
AppName$ = MID$( NewApps$, 1, i%-1 )
AddListItem "ListItemsIn", AppName$
NewApps$ = MID$( NewApps$, i%+1 )
WEND
sz$ = UIStartDlg(CUIDLL$, WILLBREAKNEW+LANG%, "FListDlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
GOTO BROKENNEW
ELSE
UIPop 1
ReturnValue% = -1
END IF
END IF
'' If user decided to continue installation (breaking another app)
'' delete the old system files to make sure they will be copied.
'' Otherwise the filedate check would not allow to install older files.
IF ReturnValue% = 2 THEN
FOR i%=1 TO GetListLength("COMPLEVEL") STEP 1
Component$ = GetListItem( "COMPLEVEL", i% )
MakeListFromSectionFilename "COMPFILES", Component$
FOR j%=1 TO GetListLength("COMPFILES") STEP 1
IF IsWindowsNT% = 1 THEN
szFile$ = DESTSYS$ + GetListItem( "COMPFILES", j% )
ELSE
szFile$ = DESTWIN$ + GetListItem( "COMPFILES", j% )
END IF
IF DoesFileExist(szFile$,femReadWrite) THEN
RemoveFile szFile$, cmoVital
END IF
NEXT j%
RemoveSymbol "COMPFILES"
NEXT i%
RemoveSymbol "COMPLEVEL"
ReturnValue% = 1
END IF
NeedELSADisp = ReturnValue%
END FUNCTION
'**
'** Purpose:
'** Create or update ELSADISP.INI, this is where we note cross
'** dependencies and support detection of version conflicts.
'** Arguments:
'** -
'** Returns:
'** -
'*************************************************************************
SUB UpdateELSADisp STATIC
'' save version numbers of all components to our INI file ELSADISP.INI
'' this can be used to check for incompatible updates, see NeedELSADisp()
ELSAdisp$ = DESTWIN$ + "ELSADISP.INI"
szNewVer$ = GetSectionKeyVersion(DRIVERKEY,"VERCHECK")
CreateIniKeyValue ELSAdisp$, DRIVERKEY, "Version", szNewVer$, cmoOverwrite
CreateIniKeyValue ELSAdisp$, DRIVERKEY, "FullName", DRIVERNAME, cmoOverwrite
uses$ = ""
FOR i%=1 TO GetListLength("USES") STEP 1
Component$ = GetListItem( "USES", i% )
uses$ = uses$ + "," + Component$
szNewVer$ = GetSectionKeyVersion(Component$,"VERCHECK")
CreateIniKeyValue ELSAdisp$, Component$, "Version", szNewVer$, cmoOverwrite
usedby$ = GetIniKeyString( ELSAdisp$, Component$, "UsedBy" )
IF usedby$ = "" THEN
usedby$ = DRIVERKEY
ELSEIF INSTR( usedby$, DRIVERKEY ) = 0 THEN
usedby$ = usedby$ + "," + DRIVERKEY
END IF
CreateIniKeyValue ELSAdisp$, Component$, "UsedBy", usedby$, cmoOverwrite
NEXT i%
CreateIniKeyValue ELSAdisp$, DRIVERKEY, "Uses", MID$(uses$,2), cmoOverwrite
END SUB
'**
'** Purpose:
'** Appends a file name to the end of a directory path,
'** inserting a backslash character as needed.
'** Arguments:
'** szDir$ - full directory path (with optional ending "\")
'** szFile$ - filename to append to directory
'** Returns:
'** Resulting fully qualified path name.
'*************************************************************************
FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
IF szDir$ = "" THEN
MakePath = szFile$
ELSEIF szFile$ = "" THEN
MakePath = szDir$
ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
MakePath = szDir$ + szFile$
ELSE
MakePath = szDir$ + "\" + szFile$
END IF
END FUNCTION
'**
'** Purpose:
'** checks whether win95 is running or not
'** Returns:
'** 1: win95 is running
'** 0: else
'*************************************************************************
FUNCTION OnWindows95() STATIC AS INTEGER
IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion = 95 THEN
OnWindows95 = 1
ELSE
OnWindows95 = 0
END IF
END FUNCTION